///@file ComplexMatrix.h
///@brief Declaration of the class representing a matrix with complex values
///@author Arnaud Duval
///@version 0.0
///@date 2010/01/18


#ifndef COMPLEXMATRIX_H
#define COMPLEXMATRIX_H

#include <iostream>
#include "Matrix.h"
#include "Complex.h"

///@class ComplexMatrix
///@brief Class defining a ComplexMatrix
/// A complex matrix is represented by a matrix for real part and a matrix for imaginary part
class ComplexMatrix
{
	private:
		///@brief Matrix for real part
		Matrix real;
		///@brief Matrix for imaginary part
		Matrix imaginary;
	public:
		///@brief Default constructor
		ComplexMatrix();
		///@brief Constructor giving the size
		ComplexMatrix(unsigned int, unsigned int);
		///@brief Destructor
		~ComplexMatrix();
		///@brief Return adjoint matrix
		ComplexMatrix Adjoint();
		///@brief Return transposed matrix
		ComplexMatrix Transpose();
		///@brief Return conjugate matrix
		ComplexMatrix Conjugate();
		///@brief Overload of () operator
		Complex operator()(unsigned int, unsigned int);


		///@brief Return Frobenius Norm
		
		

};

#endif